﻿#region 版权声明
/**************************************************************** 
 * 作    者：周黎 
 * CLR 版本：4.0.30319.42000 
 * 创建时间：2018/7/29 20:28:27 
 * 当前版本：1.0.0.1 
 *  
 * 描述说明： 
 * 
 * 修改历史： 
 * 
***************************************************************** 
 * Copyright @ ZhouLi 2018 All rights reserved 
 *┌──────────────────────────────────┐
 *│　此技术信息周黎的机密信息，未经本人书面同意禁止向第三方披露．　│
 *│　版权所有：周黎 　　　　　　　　　　　　　　│
 *└──────────────────────────────────┘
*****************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;


namespace douyinVideoCodeAnimation.Service
{

    /// <summary>
    /// ffmpeg
    /// </summary>
    public class ffMpegService
    {
        /// <summary>
        /// 使用ffMpeg.exe截取视频图片（第一帧）
        /// *需在Web.config的appSettings节点中配置ffmpeg.exe的路径*
        /// *<add key="ffmpeg" value="plugins\ffmpeg.exe" />*
        /// </summary>
        /// <param name="vedioPath">视频路径</param>
        /// <param name="saveImgWidth">保存的图片宽度</param>
        /// <param name="saveImgHeight">保存的图片高度</param>
        /// <returns>保存后的图片路径</returns>
        public static string CatchImg(string vedioPath, int saveImgWidth = 500, int saveImgHeight = 500)
        {
            string ffmpeg = AppDomain.CurrentDomain.BaseDirectory + "\\" + "ffmpeg\\ffmpeg.exe";
            if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(vedioPath)))
            {
                return "";
            }
            string saveImgPath = System.IO.Path.ChangeExtension(vedioPath, ".jpg");
            string saveImgSize = string.Format("{0}x{1}", saveImgWidth, saveImgHeight);
            ProcessStartInfo startInfo = new ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            //startInfo.Arguments = string.Format(" -i \"{0}\" -y -f image2 -t 0.001 -s \"{1}\" \"{2}\"", vedioPath, saveImgSize, saveImgPath);
            string imgSavePath = $"{AppDomain.CurrentDomain.BaseDirectory}temp\\Intercept";
            if (System.IO.Directory.Exists(imgSavePath))
            {
                System.IO.Directory.Delete(imgSavePath, true);//删除文件夹下面所有文件
            }
            System.IO.Directory.CreateDirectory(imgSavePath);//创建路径
            startInfo.Arguments = $" -i " + vedioPath                    //视频路径
                               + " -r 24"                               //提取图片的频率
                               + " -y -f image2 -ss " + "00:00:00"   //设置开始获取帧的视频时间
                               + " -t 01:00:00 "/*-s " + $"{saveImgSize} "*/             //设置图片的分辨率
                               + $@" {imgSavePath}\%d.jpg";  //输出的图片文件名，路径前必须有空格
            System.Diagnostics.Process.Start(startInfo);
            return imgSavePath;
        }
        public static string CatchMp3(string vedioPath)
        {

            string ffmpeg = AppDomain.CurrentDomain.BaseDirectory + "\\" + "ffmpeg\\ffmpeg.exe";
            if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(vedioPath)))
            {
                return "";
            }
            ProcessStartInfo startInfo = new ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            string mp3SavePath = $"{AppDomain.CurrentDomain.BaseDirectory}temp\\Mp3";
            if (System.IO.Directory.Exists(mp3SavePath))
            {
                System.IO.Directory.Delete(mp3SavePath, true);//删除文件夹下面所有文件
            }
            System.IO.Directory.CreateDirectory(mp3SavePath);//创建路径
            startInfo.Arguments = $@" -i {vedioPath} {mp3SavePath}\音频文件.mp3";
            System.Diagnostics.Process.Start(startInfo);
            return $@"{mp3SavePath}\音频文件.mp3";
        }
    }
}
